// 导入数据库
const db = require('../db/index')

// 导入加密密码包
const bcrypt = require('bcryptjs')

// 导入jsonwebtoken
const jwt = require('jsonwebtoken')

exports.login = (req, res) => {

    // 加密密码
    // console.log(bcrypt.hashSync("123456", 10));

    // res.send('登录')
    // console.log(req.body);
    const userinfo = req.body;

    // 1、检测表单数据是否合法
    // if (userinfo.username == '' && userinfo.password == '') {
    //     return res.send('用户名和密码不能为空')

    // }

    // 2、根据用户名查询用户数据
    // 接收表单数据
    // 定义sql语句
    const sql = 'select * from sp_manager where mg_name=?'

    // 执行sql语句 查询用户信息
    db.query(sql, userinfo.username, (err, result) => {
        // 执行sql语句失败
        if (err)
            return res.ResData(err.message);

        // 执行成功，但是查询到的数据不等于1
        if (result.length !== 1)
            return res.ResData('用户名错误')

        // 3、判断用户输入密码是否正确
        // bcrypt.compareSync(userinfo.password)
        const compareResult = bcrypt.compareSync(userinfo.password, result[0].mg_pwd)
        if (!compareResult) return res.ResData('密码错误')

        // 4.生成token字符串
        // 清除密码
        const user = {...result[0], mg_pwd: '' }

        // 将用户信息加密生成token
        const secret = "secret"
        const token = jwt.sign(user, secret, { expiresIn: '10h' })
        console.log(token)
        const data = {
            "id": result[0].mg_id,
            "rid": result[0].role_id,
            "username": result[0].mg_name,
            "mobile": result[0].mg_mobile,
            "email": result[0].mg_email,
            "token": 'Bearer' + token
        }
        res.ResData('登录成功', 200, data)


        // res.ResData(resdata)
        // res.send('登录成功')
        // 4、生成token字符串
    })


}